home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / partner.arc / PARTNER.DOC < prev   
Text File  |  1985-05-11  |  26KB  |  582 lines

  1.            ________________________________
  2.  
  3.  
  4.              P A R T N E R    Version 1.1
  5.  
  6.            ________________________________
  7.  
  8.  
  9.  
  10.                    C o m p u C a m
  11.  
  12.                    45 Parklea Drive
  13.                    Toronto, Ontario
  14.                         Canada
  15.                        M4G 2J7
  16.                     (416)421-9430
  17.  
  18.               (evenings after 7:00 EDT)
  19.  
  20.  
  21. PARTNER is distributed as a freeware program.  That is, you may use it, 
  22. copy it and distribute it.  You may not, however, sell it.  PARTNER, and 
  23. the original ideas behind it, remain the property of Jim Camelford and 
  24. CompuCam.  If you have found the program useful, we would appreciate a
  25. donation of $15.00 (CDN).
  26.  
  27. PARTNER's source code and documentation (in machine-readable form) are 
  28. available at a nominal cost to cover handling charges.  If you are 
  29. interested, please contact the author at the above address.  PARTNER 
  30. is written in TURBO (tm) Pascal.  You may wish to obtain the source code
  31. if you want to see how it's done, modify the program's operation to add 
  32. features of your own or generate different versions that use less memory.
  33.  
  34. Of course, we would be delighted to hear your comments and will attempt to 
  35. fix any reported bugs in either the documentation or the program.  English 
  36. isn't exactly free of glitches either!  Write us!
  37.  
  38. PARTNER is not, however, warranted in any way nor are any claims made as to 
  39. the suitability of the program for your application.
  40.  
  41.  
  42.           PARTNER Copyright (c) 1985 James R. Camelford
  43.    ________________________________________________________________
  44.  
  45. PARTNER - What is It ? 
  46. ======================
  47. PARTNER is a useful utility program that resides permanently in your 
  48. system's memory yet is available at any time with the touch of a key.  
  49. It provides a set of useful diskette and directory maintenance facilities 
  50. that can enhance most programs running on your PC.
  51.  
  52. For example, it provides:
  53.  
  54.       o  multiple-window access to the directories on your diskettes or 
  55.          hard disk;
  56.  
  57.       o  an ability to remove, copy and rename files;
  58.  
  59.       o  a technique to move files from one sub-directory to another on 
  60.          the same volume without copying and removing;
  61.  
  62.       o  a capability for displaying (ie: typing) text files on your screen;
  63.  
  64.       o  reports of space usage for individual files and for the volume as 
  65.          a whole;
  66.  
  67. What it Doesn't Do          
  68. ==================
  69. Because PARTNER uses colour extensively, it requires a colour/graphics 
  70. adapter.  In its conventional form, it requires about 52kb of permanent 
  71. memory.  PARTNER could easily be modified to sense which type of display 
  72. it's using and to use only monochrome.  It is not currently compatible 
  73. with 40-column or graphics display modes.  It's been tested on true IBM PC's,
  74. PC's with hard disks, AT's and the Advanced Colour/Graphics adapter and 
  75. found to work well.
  76.  
  77. PARTNER works well with a variety of programs.  However, it is known to 
  78. be incompatible with some.  A list and technical description is provided 
  79. at the end of this document.
  80.  
  81. How you Start the Program          
  82. =========================
  83. You invoke PARTNER from the DOS command prompt using the following command.  
  84. (The square brackets indicate optional parameters just like in the DOS 
  85. manual.)
  86.  
  87.          PARTNER [/load]  [/nnn]
  88.  
  89.           /load    causes PARTNER to be permanently retained in memory as
  90.                    an extension to DOS.  If you do not use the /load
  91.                    option, then PARTNER runs as a utility program and
  92.                    exits normally when you are done.  When PARTNER is run
  93.                    as a utility, it waits for 5 seconds to display its
  94.                    logo before allowing you to enter a command).
  95.  
  96.           /nnn     the scancode of the keystroke you want to use to invoke
  97.                    PARTNER once it is loaded, either from the DOS command
  98.                    prompt or from within a running program.  By default,
  99.                    PARTNER uses shift-F9 (that is: 92).  You can set the
  100.                    signalling keystroke to any convenient key.
  101.  
  102. PARTNER - How to Use it
  103. =======================
  104. PARTNER is pretty simple to use!  (Of course that may be construed as 
  105. literary license on my part ... but the approach we will take for teaching 
  106. you how to use it is by taking you through a step-by-step sequence ...)
  107.  
  108. Bring PARTNER up as a utility program first.  That is, just run it from 
  109. the DOS command prompt using the command:
  110.  
  111.                         PARTNER
  112.  
  113. Do not specify any options.  PARTNER will display its logo, wait 5 seconds 
  114. and then offer you a small window in the upper left corner of your screen.  
  115. (Yes, you can change its shape and location but let's leave that until 
  116. later ...)
  117.  
  118. PARTNER prompts you for a Directory Name.  Enter a directory name using 
  119. the same syntax as you would for DOS' DIR command.  In this state, 
  120. PARTNER understands drive letters, wildcard constructs using  * and ? 
  121. and sub-directories  -- so use them if you like.  Alternatively, you can 
  122. simply strike the RETURN key (without typing anything) if you want a 
  123. display of all filenames on the default directory on the default drive. 
  124.  
  125. PARTNER displays a list of filenames on the volume until either it fills 
  126. the window (ie: runs out of space) or runs out of filenames.  At this point, 
  127. it pauses and highlights the filename in the upper left corner of the 
  128. window.  You can "operate" on this file using the features described below.
  129.  
  130. Now the fun starts, since now all the options are available to you ... and 
  131. there are lots of them.  But first, look at the bottom line of the window.  
  132. This is know as the Help line.  It lists some of the functions now 
  133. available (eg: Remove, Rename, Change Directory ...).  Watch the help 
  134. line from time to time as it will contain additional, explanatory 
  135. information to assist you when entering a command.
  136.  
  137. The functions now available are briefly listed below; more detail follows 
  138. later:
  139.  
  140.       Enter     Specify a different wildcard sequence, drive,
  141.                 filename or sub-directory
  142.  
  143.       F2        Remove this file
  144.  
  145.       F4        Copy this file somewhere
  146.  
  147.       F6        Rename this file
  148.  
  149.       F8        Change the default sub-directory for this window
  150.                 to something else
  151.  
  152.       F10       Display additional information about this file
  153.                 (ie: creation timestamp, file size, file attributes etc).
  154.  
  155.       F9        Display (ie: type) this file on the screen now
  156.  
  157.       F1, F3    Shrink or grow the window's horizontal size
  158.  
  159.       F5, F7    Shrink or grow the window's vertical size
  160.  
  161. You can move about the window, selecting different files, using the normal 
  162. cursor movement keys.  That is:
  163.  
  164.       -> <-     Moves the "file pointer cursor" right or left
  165.  
  166.       ^ |       Moves up or down
  167.       | v
  168.  
  169.       home      Moves to the upper left corner
  170.  
  171.       PgUp      Starts the display of filenames all over again
  172.                 from the first file in the directory (that is,
  173.                 it's a "start over" key rather than "display the
  174.                 previous page" key).
  175.  
  176.       PgDn      Displays the next window-full of file names
  177.  
  178.       End       Returns to the previous window or DOS.
  179.  
  180. Hold it ... !  What's that, returns to the previous window?  How did we 
  181. get to another.  Ah Ah, you say!  Multiple windows?  Yes indeed ...
  182.  
  183. To bring up another window, strike shift-F9 again.  A second (third, 
  184. fourth) window will spring up on the screen.  You can carry out all the 
  185. same manoeuvres here that you did on the preceeding window and then, when 
  186. you're done, depress End to return to the "invoking window".
  187.  
  188. The windows "stack" ... that is, when you invoke a new window and return, 
  189. everything will be absolutely as you left it.
  190.  
  191. (Special note:  when shift-F9 is used as the invoking keystroke, the  \  
  192. key carries out the same function for convenience allowing you to bring 
  193. up subsequent windows with just 1 keystroke).
  194.  
  195. Accessing PARTNER from Within Another Program 
  196. =============================================
  197. First you must load PARTNER as a permanent part of DOS; you do this using 
  198. the following DOS command.  (This command can be included in an AUTOEXEC 
  199. batch file so that it is done each time you start your system.)
  200.  
  201.                    PARTNER/load
  202.  
  203. Then you can invoke PARTNER from within another program by just depressing 
  204. shift + F9.  
  205.  
  206. PARTNER opens a window in the upper left corner of the screen and you 
  207. carry on exactly as described before.  When you depress End for the last 
  208. time, PARTNER returns to where you invoked it - leaving the screen and 
  209. operating environment exactly as you left it.
  210.  
  211. There are, however, two known exceptions.  PARTNER does not work with:
  212.  
  213.       o  screens in graphics mode
  214.  
  215.       o  screens in 40-column text mode
  216.  
  217. The window position, size and sub-directory settings are remembered so you 
  218. won't have to re-specify them the next time you enter PARTNER.
  219.  
  220. Moving the Windows About 
  221. ========================
  222. Ctrl + one of the cursor movement keys (Home, End, left-arrow, right-arrow, 
  223. PgUp or PgDn) causes the window to move about the screen in the direction 
  224. you designate.
  225.  
  226. (Literary license again:  Ctrl+PgUp and Ctrl+PgDn are used in place of the 
  227. more obvious Ctrl+up/down arrow because the keys in the middle, vertical 
  228. row of the numeric keypad on this machine (@#$%^) don't register through 
  229. the normal BIOS calls).
  230.  
  231. You can place the windows virtually anywhere on the screen and change their 
  232. size using the F1, F3, F5 and F7 keys.  The settings are remembered from one 
  233. use to the next.  You can overlap them ... or not ... as you desire.
  234.  
  235. By default, windows 1-3 don't overlap and windows 1-2 leave the bottom of 
  236. the screen un-obstructed.  But, the choice is ultimately yours.
  237.  
  238. Just the Enter Key
  239. ==================
  240. The Enter Key is powerful.  When the "file pointer cursor" is highlighting 
  241. a filename, you indicate that you want to examine a new set of files by 
  242. just depressing the Enter key.  The top of the window is opened, allowing 
  243. you to type a new directory search specification.
  244.  
  245. You can enter a new drive, sub-directory or filename in conjunction with 
  246. any wildcard pattern (ie: ? and *) and that will be used as the target for 
  247. the next directory display.
  248.  
  249. If you have "logged" this window into a particular sub-directory using 
  250. the F8-Change Directory key, then you may temporarily override this by 
  251. specifying a different drive or sub-directory.  All actions like Removing, 
  252. Displaying (ie: typing) and Renaming are now relevant to this directory 
  253. and not the one you specified using the F8-Change Directory command.  
  254. Of course, the default assigned to the window is used when you don't        
  255. specify a "path" in the request line.
  256.  
  257. That's just like in DOS, where you can CD to a particular sub-directory, 
  258. yet operate on files outside that directory by using the appropriate 
  259. syntax on a Del command.  Here, the override "sticks" until you depress 
  260. the Enter key again to request a new directory display.  The override 
  261. most definitely "sticks" while using the PgUp, PgDn and "window 
  262. invocation" keys (ie: Shift-F9) ... would you really want it to work any 
  263. other way?
  264.  
  265. If you want to display the contents of a sub-directory, then the directory 
  266. request must terminate with a \.  For example:
  267.  
  268.                    e:\wv\correspondance\
  269.  
  270. displays the contents of the files in that sub-directory (the trailing *.* 
  271. is assumed), whereas 
  272.  
  273.                    e:\wv\correspondance
  274.  
  275. only tests   e:\wv   for the presence of the sub-directory "correspondance".
  276.  
  277. If you do not specify a drive or pathname then the search is assumed to 
  278. occur in the current, default sub-directory on the default drive.
  279.  
  280. F2 - Remove a File  
  281. ==================
  282. Touching F2 removes the file.  Be careful out there!  If you slip you'll 
  283. need some assistance from Mr. Norton.
  284.  
  285. F4 - Copy a File
  286. ================
  287. Touching F4 will copy the file.  You are prompted for the name of the 
  288. destination -- enter a new filename.  The filename can contain a drive 
  289. letter but no sub-directory or pathname.  You can specify a drive letter 
  290. alone (leaving the filename blank) and the file will be copied to the 
  291. destination drive retaining its name.
  292.  
  293. Now this copy isn't exactly the same as the DOS copy and there are some 
  294. restrictions.
  295.  
  296.       o  the output filename cannot specify a sub-directory; you
  297.          can only specify an optional drive letter (ie: A:, B: etc)
  298.  
  299.       o  you can specify a whole new filename or leave the filename
  300.          blank.  You cannot use any form of DOS wildcard construct
  301.          with * and ?.  If the filename is left blank, then of course 
  302.          it is copied to the output drive using the same name.
  303.  
  304. If you want to copy a file from one sub-directory to another on the same 
  305. drive then use F6-Rename, instead.  
  306.  
  307. If you want to copy a file from one sub-directory to another on different 
  308. drives then use the following procedure.   
  309.  
  310.       o  "Log" this window onto the desired, destination drive
  311.          and sub-directory using the F8-Change Directory function
  312.          You will obtain a list of filenames on that drive.
  313.  
  314.       o  Now, strike the Enter key to request the display of a new directory.
  315.  
  316.       o  Enter the name of the directory containing your desired
  317.          source file or the specific source filename.  Press    
  318.          Enter to display the contents of that directory and    
  319.          then move the cursor on top of the source filename.
  320.  
  321.       o  Press F4-copy.  Enter the drive letter and, optionally, 
  322.          a new name for the file you want to copy.
  323.  
  324.          Because you have set the default directory on this
  325.          window for the desired destination drive and sub-
  326.          directory the output will be directed there.
  327.  
  328. If you are only working with drive names (that is, you don't use sub-
  329. directories) then the above isn't necessary since you can use any drive 
  330. letter in the destination filname and select any drive letter using the 
  331. Enter key request display.  
  332.  
  333. Yes, this is a bit complicated!  A bit you say ... !!!  Well, we'll fix it 
  334. when we receive the 3.0 version of Turbo.  In the meantime, think of all 
  335. the fun you'll have moving files about from within 1-2-3 (tm) that you 
  336. could never access before!
  337.  
  338. F6 - Rename a File 
  339. ==================
  340. PARTNER makes it easy.  Touch F6, you will be prompted for a new name.  
  341. Type any name you wish, including a sub-directory that may be different 
  342. from the one you are displaying.  The file will be renamed and, possibly, 
  343. moved from one sub-directory to another in the process.
  344.  
  345. You must type a full filename.  No wildcard constructs are allowed.
  346.  
  347. F8 - "Log into a new Sub-Directory" 
  348. ===================================
  349. Each window refers to a default drive and sub-directory.  When you access 
  350. a window for the first time, the directory and drive default to the one 
  351. in use in the "invoking window".
  352.  
  353. This makes it easy for you to set up some defaults to quickly obtain 
  354. directories and perform file maintenance work for sub-directories without 
  355. having to type-in the whole tree-structured name for most accesses.
  356.  
  357. You change the default value for a window using the F8-Change Directory 
  358. command.  When you press F8, PARTNER prompts you for the name of a new 
  359. directory.  You enter a new directory and optional drive designator in 
  360. the usual DOS format, eg:
  361.  
  362.                    d:\sub1\sub2\sub3
  363.  
  364. Now all directory requests made in this window will, by default, refer 
  365. to this "path".  But, you can override this at any time when providing 
  366. a new search request after striking the Enter key.          
  367.  
  368. For example, suppose you had entered this in response to the F8-Change 
  369. Directory prompt:
  370.  
  371.                    d:\wv\correspondance
  372.  
  373. All further requests in this window that do not specify a drive-
  374. letter and path will revert to  d:\wv\correspondance.   But, you
  375. can enter any other drive, path and filename to temporarily
  376. override this when requesting a directory display by striking
  377. the Enter key.     
  378.  
  379. If you think about it, that's exactly the way DOS operates too.  You can 
  380. specify a default path and drive and yet always override it on DIR requests.
  381.  
  382. Getting a bit technical, remember that if you specify
  383.  
  384.                    d:
  385.  
  386. and not
  387.  
  388.                    d:\
  389.  
  390. the d: request indicates the sub-directory now in default effect and not 
  391. the root directory on the volume.      
  392.  
  393. Of course, if all this is complicated and you really don't use a lot of 
  394. sub-directories you can ignore all of this and just stick to using drive 
  395. letters.  Remember that a window can have a particular drive letter as 
  396. its default if you just respond with d: to the F8-Change Directory prompt. 
  397.  
  398. The default directory and drive are always shown on the 25th line of the 
  399. display.  You are referring to this when you do not specify an override.
  400.  
  401. F10 - More Information    
  402. ======================
  403. F10 - More displays detailed information about the file's size, 
  404. timestamp and attributes.
  405.  
  406. F9 - Display (Type) the File
  407. ============================
  408. A handy feature ... a quick touch of the F9 key will open a window and 
  409. display the ASCII contents on the screen.  If you use this on non-text 
  410. files it could send your display awry.
  411.  
  412.  
  413.  
  414. PARTNER - Some Technical Notes
  415. ==============================
  416. PARTNER was written to demonstrate how to use Turbo Pascal's interrupt, 
  417. BIOS and MS-DOS access facilities.  Principally,
  418.  
  419.       o  PARTNER attaches the keyboard interrupt, when permanently
  420.          loaded as part of DOS, and watches for the shift-F9 keystroke.
  421.  
  422.       o  It saves the registers and manipulates the stack so
  423.          that the CPU can run in "Turbo space".
  424.  
  425.       o  It carefully ensures that the external environment
  426.          including the registers, screen and Disk Transfer Area
  427.          (DTA) are left un-altered when control is finally
  428.          returned to the interrupted program.  Of course, files
  429.          may have been removed, re-named or copied.
  430.  
  431.       o  PARTNER sometimes terminates if you get a device timeout on 
  432.          a non-ready disk drive.  This can occur if you do a directory 
  433.          on a drive letter that is defined but not ready (eg: 
  434.          non-existant RamDisk).  If you reply "I" to ignore the 
  435.          error several times you may clear it.  Responding "A" to abort 
  436.          will return you to the DOS command prompt terminating your 
  437.          application too!   We don't like it either but we thought 
  438.          we'd be honest and warn you.  We'd welcome any thoughts on 
  439.          how to easily improve this.
  440.  
  441. PARTNER intercepts the keyboard interrupt vector (vector[$09]).  However, 
  442. it must "call" the BIOS keyboard handler each time a keystroke occurs 
  443. so that the BIOS can decode the input ScanCodes and place the character 
  444. into the DOS keyboard buffer.  To perform the "call", the original contents
  445. of vector[$09] are stored in vector[111] and accessed via an Int 111 
  446. instruction.  If the use of vector[111] conflicts with some hardware or 
  447. other software you have installed, you can obtain the program source and 
  448. change this to some other un-used location.
  449.  
  450. PARTNER could have a lot of extra bells and whistles.  In fact you might 
  451. want to obtain the program's Turbo (tm) source code and try adding them 
  452. yourself.  We kept it as small as we could since we wanted to run it most 
  453. of the time yet not have PARTNER be the dominant application in the machine.
  454.  
  455. PARTNER requires some 52k of memory by default.  Actually, the maximum it 
  456. can use for the time being is 64k since that is the limit imposed by the 
  457. DOS $27 lock-program-in-core interrupt service.  Each window invocation 
  458. requires about 5k (equivalent to $138, 16-byte paragraphs in 8088 
  459. terminology).  Therefore, memory use can be summarized as follows:
  460.  
  461.       Turbo runtime routines        11k
  462.       PARTNER program code          16k
  463.       Stack / Heap space            25k
  464.                                    -----
  465.       Total                         52k  approx
  466.  
  467. You can reduce this by re-compiling the program using Borland's
  468. version 2.0 Pascal compiler and specifying a smaller Stack /
  469. Heap space.  That is, use the following series of keystrokes to
  470. set the Options:
  471.  
  472.            Key Stroke         Means                     
  473.  
  474.               O           options
  475.               C           COM file
  476.               I0          Stack is minimum of 0 bytes
  477.               A620        Stack is maximum of 25k bytes
  478.               Q           Quit options
  479.               C           Compile to floppy
  480.  
  481. By specifying the A option as a smaller multiple of $138, you can generate 
  482. a system capable of displaying at most 1, 2 or 3 windows.  Remember that 
  483. the F10-More and F9-Display commands require a full 5k stack-frame 
  484. to operate within as well.
  485.  
  486. Techniques you might try to reduce memory, at the expense of execution 
  487. speed, (if you're adventurous) would be to:
  488.  
  489.       o  write the screen images to a diskfile rather than hold
  490.          them within the program stack (at a saving of 5000 bytes per panel)
  491.  
  492.       o  turn some of the procedures into overlays allowing you
  493.          to write gallons more code at negligible memory cost
  494.  
  495. Both of these techniques would require you to ensure that the original 
  496. disk was always available (ie: not a floppy) so that it would not 
  497. overwrite data or load improperly.
  498.  
  499. For those interested in studying the interrupt invocation code: you will 
  500. notice that Borland's Turbo manual leaves a bit to be desired in terms 
  501. of completeness in this area.  In short, the instructions in Borland's 
  502. manual flatly don't work!  Much more code is needed and the Inline 
  503. statements incorporated within PARTNER provide a proper, "cookbook" 
  504. solution.  See the March-June '85 issues of Tug Lines for a description 
  505. or contact the author.
  506.  
  507. Incompatibilities          
  508. =================
  509. PARTNER was written as an educational exercise ... and that it was.  
  510. We found lots of areas where additional sophisticated programming would 
  511. be required to make it work perfectly in all cases.              
  512.  
  513. PARTNER works by replacing the DOS keyboard interrupt vector with the 
  514. address of its own code.  Early during execution of the interrupt 
  515. procedure, PARTNER calls the "original vector" to ensure that whatever 
  516. was supposed to happen before happens too.  That's why keyboard I/O 
  517. works at all with PARTNER running.  In this way, PARTNER acts as an 
  518. interceder ... getting into the middle of the action but not taking 
  519. part unless it specifically sees the shift-F9 sequence.
  520.  
  521. Consequently, it is comptatable with lots of programs.  However, we 
  522. know of the following problems:
  523.  
  524. 1.    Bruce and James' WordVision and SmartTerm 100 also choose 
  525.       to execute when a keyboard interrupt occurs ... but they, 
  526.       unlike PARTNER, don't act as interceders - they take the
  527.       interrupt for keeps and do not pass control to other
  528.       programs that may have intercepted the interrupt vector.
  529.       Consequently PARTNER never gets a chance to see the
  530.       interrupt and is locked out until the programs terminate
  531.       and restore the vector's contents.
  532.  
  533.       You can use PARTNER with these programs but it won't be                
  534.       accessible again until you terminate them.    
  535.  
  536. 2.    Prokey(tm) (from RoseSoft) is a little more consistent in
  537.       that it too acts as an interceder.  The two work together
  538.       ... for a while.  Finally one or the other seems to mix up
  539.       the "true" contents of the keyboard's interrupt vector,
  540.       causing a loop and a re-boot is required.
  541.  
  542.       Don't use PARTNER in conjunction with ProKey.                
  543.  
  544. 3.    SideKick from Borland is a truly interesting case.
  545.       Sidekick handles the problem posed in case 1 since it
  546.       periodically examines the contents of the keyboard vector
  547.       (presumably from within the timer interrupt) and forcibly
  548.       restores its own address over anything else that was there
  549.       (in vector[$09]) if some other program has possessed the
  550.       audaucity to change it !  Sidekick, having thus ensured it
  551.       will always control the keyboard, kindly passes control   
  552.       down the keyboard interrupt chain if it doesn't want to
  553.       react to the keys pressed.  Great, SideKick works from
  554.       within WordVision !  However the bad news is that the
  555.       wholesale confusion over exactly who own the hardware
  556.       vector address, what its contents really should be when
  557.       various programs terminate and what to restore it to at
  558.       any given time when returning from the interrupt handler
  559.       causes the machine to lock up in a series of mysterious
  560.       ways after operating for a while.
  561.  
  562.       Don't use PARTNER in conjunction with SideKick and  
  563.       especially don't use it in conjuction with SideKick + 
  564.       WordVision + ProKey.                
  565.  
  566. 4.    PARTNER seems to work fine with DOSEDIT ... that little guy
  567.       obeys the rules.  (DOSEDIT is a bulletin board program that
  568.       provides enhanced editing capabilities on the DOS command
  569.       prompt line).
  570.  
  571.       You can use PARTNER with DOSEDIT.
  572.  
  573. 5.    No problems from within:
  574.  
  575.                    BASIC     watch out for 40-column screens
  576.  
  577.                    1-2-3     watch out for the graphics screen
  578.  
  579.                    Turbo     that's why we wrote it because Turbo,
  580.                              excellent environment that it is, can't do
  581.                              this stuff when you really, really need it.
  582.